/********公用变量************/
var answerlist = {}; // 答案集合; 第0题存性别
var groupPointer = 1; // 组别指针,默认指向第一组
var endGroup = 7; // 最后一组
var useCookie = false; // 开启cookie将使用cookie记录答案
var manQuestionID = ['7_test_97_2']; // 男题目
var womanQuestionID = ['7_test_98_2']; // 女题目

var manOptionID = ['7_test_97_3_148_0']; // 男题目 -- 题目任意一选项
var womanOptionID = ['7_test_98_4_154_0']; // 女题目-- 题目任意一选项
var manId = '1_test_0_0_1_0'; // 男选项ID; 第0题题为性别题
var womanId = '1_test_0_0_0_0'; // 女选项ID； 第0题题为性别题

$(document).ready(function() {
	// resetAnswers();
	// 从cookie中读取答案;防止刷新丢题
	readAnswers(useCookie);
	
	// 单选题
	$(".radio dd").click(function(){
		// 获取选中项ID
		var id = $(this).attr("id");
		changeSex(id);
		// 创建选项
		var option = new Option(id,"radio");
		// 判断是否已经记录过答案
		var answer = answerlist[option.groupNo + "_" + option.questionNo];
		if(answer){ // 已记录答案
			answer.resetOption(); // 重置答案
			answer.addOption(option); // 设置答案
		}else{ // 未记录答案
			var answerObject = new Answer();
			answerObject.init(option,false);
			answerlist[option.groupNo + "_" + option.questionNo] = answerObject;
		}
		// 调整样式
		$(this).siblings("dd").removeClass("selected").end().addClass("selected");
		// 写cookie
		writeAnswers(useCookie);
	});
	
	// 多选题
	$(".checkbox dd").click(function(){
		// 是否处于被选中状态
		var checked = $(this).hasClass("selected");
		// 获取选中项ID
		var id = $(this).attr("id");
		// 创建选项
		var option = new Option(id,"checkbox");
		// 判断是否已经记录过答案
		var answer = answerlist[option.groupNo + "_" + option.questionNo];
		if(checked){
			$(this).removeClass("selected"); // 取消选中
			answer.deleteOption(option); // 删除选项
			writeAnswers(useCookie);
			return false;
		}
		if(answer){ // 已记录答案
			if(option.isExclude == "1"){ // 排斥其他答案
				answer.resetOption();
				$(this).siblings("dd").removeClass("selected").end().addClass("selected");
			}else{ // 不排斥选项
				var excludeOption = $(this).siblings("dd[id$='1']");
				if(excludeOption.size() > 0 && excludeOption.hasClass("selected")){ // 如排斥其他答案的选项被选，则清除
					var excludeId = excludeOption.attr("id");
					excludeOption.removeClass("selected");
					var exOption = new Option(excludeId,"checkbox");
					answer.deleteOption(exOption); // 删除选项
				}
			}
			answer.addOption(option); // 设置答案
		}else{ // 未记录答案
			var answerObject = new Answer();
			answerObject.init(option,false);
			answerlist[option.groupNo + "_" + option.questionNo] = answerObject;
		}
		$(this).addClass("selected");
		// 写cookie
		writeAnswers(useCookie);
	});
	
	// 下一组题
	$("#next_button").bind("click",function(){
		// 判断是否都进行了选择
		var msg = "";
		$("#" + groupPointer + "_test").find("dl").each(function(index,obj){
			if(!$(this).is(':hidden')){
				if($(this).find("dd[class='selected']").size() == 0 ){
					var dl = $(this).find("dd").attr("id").split("_");
					msg += "第【" + dl[0] + "】组【" + dl[3] + "】题\n"
				}
			}
		});
		if("" != msg){
			alert(msg + "未进行选择！");
			return false;
		}
		// 最后一组,进行提交
		if(groupPointer == endGroup){
			if($(this).hasClass("bn_chaKan")){
				var action = ctx + 'ha/fdts/loadFdtsEvaResult.do';
				$("#answerForm").remove();
				$("body").append("<form id='answerForm' action='"+action+"' method='post' />");
				$("#answerForm").append($("<input type='hidden' id='answerstr' name='answerstr' />"));
				$("#answerstr").val(getAnswerJson());
				$("#answerForm").submit();
			}
		}else{
			if(groupPointer == (endGroup -1)){
				$("#next_button").addClass("bn_chaKan");
			}
			// 切换组别
			$("#" + groupPointer + "_test").hide();
			groupPointer++;
			$("#" + groupPointer + "_test").show();
			if(groupPointer > 1){ // 第二组开始,显示上一组
				$("#up_button").show();
			}
			writeAnswers(useCookie);
		}
	});
	
	// 上一组题
	$("#up_button").bind("click",function(){
		if(groupPointer == endGroup){ // 最后一组
			$("#next_button").removeClass("bn_chaKan");
		}
		// 切换组别
		$("#" + groupPointer + "_test").hide();
		groupPointer--;
		$("#" + groupPointer + "_test").show();
		
		if(groupPointer == 1){ // 第一组
			$("#up_button").hide();
		}
		writeAnswers(useCookie);
	});
	
	// 默认选中性别 男
	if(!useCookie || null == getCookie("split" || undefined == getCookie("split"))){
		$("#" + manId).trigger("click");
	}
}); 

/**
 * 男女切换
 * */
function changeSex(id){
	if(manId == id){ // 选中男
		// 切换题显示
		for(var i=0;i<manQuestionID.length;i++){
			$("#" + manQuestionID[i]).show();
		}
		for(var i=0;i<womanQuestionID.length;i++){
			$("#" + womanQuestionID[i]).hide();
		}
		for(var i=0;i<womanOptionID.length;i++){
			var option = new Option(womanOptionID[i],"radio"); // 清除女性题答案
			var answer = answerlist[option.groupNo + "_" + option.questionNo];
			if(null != answer && undefined != answer){
				var answerArray = answer.answerIdArray;
				// 移除样式
				for(var i=0;i<answerArray.length;i++){
					$("#"+answerArray[i]).removeClass("selected");
				}
			}
			answerlist[option.groupNo + "_" + option.questionNo] = undefined;
		}
	}else if(womanId == id){
		// 切换题显示
		for(var i=0;i<manQuestionID.length;i++){
			$("#" + manQuestionID[i]).hide();
		}
		for(var i=0;i<womanQuestionID.length;i++){
			$("#" + womanQuestionID[i]).show();
		}
		
		for(var i=0;i<manOptionID.length;i++){
			var option = new Option(manOptionID[i],"radio"); // 清除男性题答案
			var answer = answerlist[option.groupNo + "_" + option.questionNo];
			if(null != answer && undefined != answer){
				var answerArray = answer.answerIdArray;
				// 移除样式
				for(var i=0;i<answerArray.length;i++){
					$("#"+answerArray[i]).removeClass("selected");
				}
			}
			answerlist[option.groupNo + "_" + option.questionNo] = undefined;
		}
	}
}

/**
 * 组装问题的json
 */
function getAnswerJson(){
	var list = new Array();
	for(prop in answerlist){
		list.push(answerlist[prop]);
	}
	return $.toJSON(list);
}


/**
 * 删除cookie
 */
function resetAnswers(){
	 delCookie("split");
	 delCookie("answerlist");
	 delCookie("groupPointer");
}

/**
 * 读取cookie中内容，并显示
 */
function readAnswers(useCookie){
	if(!useCookie){
		return false;
	}
	// 读取cookie
	var split = getCookie("split");
	if(null == split || undefined == split){
		return false;
	}
	var cookie = "";
	for(var i=1;i<=split;i++){
		cookie += getCookie("answerlist" + i);
	}
	// 切换页面
	var pointer = getCookie("groupPointer");
	if(null != pointer && undefined != pointer){
		groupPointer = pointer;
		$("#1_test").hide();
		$("#" + groupPointer + "_test").show();
		if(groupPointer > 1){ // 第二组开始,显示上一组
			$("#up_button").show();
		}
		if(groupPointer == endGroup){ // 最后一组
			$("#next_button").addClass("bn_chaKan");
		}
	}
	var object = $.parseJSON(cookie);
	// 显示刷新页问题
	for(prop in object){
		// 选中已选中内容
		var target = object[prop];
		var answerIdArray = target.answerIdArray;
		for(var i=0; i<answerIdArray.length;i++){
			$("#" + answerIdArray[i]).addClass("selected");
		}
		// 读取数据
		var answer = new Answer();
		answer.init(target, true);
		answerlist[prop] = answer;
	}
}

/**
 * 将答案写入cookie
 */
function writeAnswers(useCookie){
	if(!useCookie){
		return false;
	}
	var json = $.toJSON(answerlist);
	var split = Math.ceil(json.length/2048);
	for(var i=1;i<split;i++){
		delCookie("answerlist" + i);
		addCookie("answerlist" + i,json.substring(2048*(i-1),2048*i),1);
	}
	delCookie("answerlist" + i);
	addCookie("answerlist" + i,json.substring(2048*(i-1),json.length),1);
	delCookie("groupPointer");
	addCookie("groupPointer",groupPointer,1);
	delCookie("split");
	addCookie("split",split,1);
}

/**
 * @Description 选项定义
 * @Example 1_test_71_4_15_0 组别_问卷名_数据库中编号_一组中题号_答案编号_是否排斥其他值
 * @param group 		组号
 * @param paperName 	卷名
 * @param databaseNo 	数据库中编号
 * @param questionNo 	题目编号
 * @param answerNo 		答案编号
 * @param isExclude 	是否排斥其他选项
 **/
function Option(param,questiontype){
	var params = param.split("_");
	this.optionId = param;
	this.groupNo = params[0]; // 组号
	this.paperName = params[1]; // 卷名
	this.databaseNo = params[2]; // 数据库中编号
	this.questionNo = params[3]; // 题目编号
	this.answerNo = params[4]; // 答案编号
	this.isExclude = params[5]; // 是否排斥其他选项
	this.questionType = questiontype; //radio、checkbox
};

/**
 * @Description 答案定义
 * @param group 		组号
 * @param paperName 	卷名
 * @param databaseNo 	数据库中编号
 * @param questionNo 	题目编号
 * @param answerNo 		答案编号
 **/
function Answer(){
	this.groupNo; // 组号
	this.paperName; // 卷名
	this.databaseNo; // 数据库中编号
	this.questionNo; // 题目编号
	this.answerArray; // 选项序列
	this.questionType; // 题型
	this.answerIdArray; // 选中题id
}

/**
 * @Description 答案初始化
 * @param group 		组号
 * @param paperName 	卷名
 * @param databaseNo 	数据库中编号
 * @param questionNo 	题目编号
 * @param answerNo 		答案编号
 **/
Answer.prototype.init = function(target,isCookie){
	this.groupNo = target.groupNo; // 组号
	this.paperName = target.paperName; // 卷名
	this.databaseNo = target.databaseNo; // 数据库中编号
	this.questionNo = target.questionNo; // 题目编号
	this.questionType = target.questionType; // 题型
	if(isCookie){
		this.answerArray = target.answerArray; // 选项序列
		this.answerIdArray = target.answerIdArray;
	}else{
		this.answerArray = new Array(); // 选项序列
		this.answerArray.push(target.answerNo);
		this.answerIdArray = new Array();
		this.answerIdArray.push(target.optionId);
	}
}

/**
 * 增加选项
 **/
Answer.prototype.addOption = function(option){
	this.answerArray.push(option.answerNo); 
	this.answerIdArray.push(option.optionId);
}

/**
 * 删除选项
 **/
Answer.prototype.deleteOption = function(option){
	var idx1 = this.answerArray.getIndexByValue(option.answerNo);
	this.answerArray.remove(idx1);
	var idx2 = this.answerIdArray.getIndexByValue(option.optionId);
	this.answerIdArray.remove(idx2);
}

/**
 * 清空选项
 **/
Answer.prototype.resetOption = function(){
	this.answerArray = new Array(); 
	this.answerIdArray = new Array();
}

//图片点击弹出层效果
function showZxDesc(zxid) {
    $.ajax({
        type:
        "POST",
        url: ctx+"/ha/fdts/loadFdtsDesc.do",
        data: "zxid=" + zxid,
        success: function(msg) {
            $(".ContentBox").empty();
            $(".ContentBox").append(msg);
            $(".CePing").hide();
            $(".TanChuDiv").fadeIn(500);
            $(".YangSheng").empty();
           // if (type == 1) {
           / /   // $(".YangSheng").append("关于引起常见健康和美容问题的体质因素");
           // }
            //else {
            //    $(".YangSheng").append(conversion(phycode) + "养生说");
          //  }

        }
    });
}
function loadFdtsRst() {
	
    var jsonstr = getAnswerJson(answerlist);
    alert(jsonstr);
    if (jsonstr == "" || jsonstr == undefined) {
        alert("请先填写题目！");
        window.location = ctx+"/ha/fdts/loadFdtsIndex.do";
    }
    else { 
        $.ajax({
            type: "POST",
            url: ctx+"/ha/fdts/loadFdtsEvaResult.do",
            data: "valuestr=" + jsonstr,
            success: function(msg) { 
                if (msg.split('$').length == 3) {
                    var outstr = "";
                    $(".tiZhi").empty();

                    var ztizhi = msg.split('$')[0];
                    outstr += "<tr><th class=\"font_red\">您的主要体质：</th><td class=\"main\">" + conversionimg(ztizhi) + "<div class=\"txt\">*点击图片即可查阅体质养生知识</div></td></tr>";

                    var jtizhi = msg.split('$')[1];
                    if (jtizhi != "") {
                        outstr += "<tr><th valign='top'>您的兼有体质：</th>";
                        outstr += "<td><ul>";
                        for (var i = 0; i < jtizhi.split(',').length; i++) {
                            if (jtizhi.split(',')[i] != "") {
                                outstr += "<li><a href=\"javascript:;\" onclick=\"show('" + jtizhi.split(',')[i] + "',0)\">" + conversion(jtizhi.split(',')[i]) + "</a></li>";
                            }
                        }
                        outstr += "</ul></td></tr>";
                    }

                    var qtizhi = msg.split('$')[2];
                    if (qtizhi != "") {
                        outstr += "<tr><th valign='top'>您的倾向体质：</th>";
                        outstr += "<td><ul>";
                        for (var i = 0; i < qtizhi.split(',').length; i++) {
                            if (qtizhi.split(',')[i] != "") {
                                outstr += "<li><a href=\"javascript:;\" onclick=\"show('" + qtizhi.split(',')[i] + "',0)\">" + conversion(qtizhi.split(',')[i]) + "</a></li>";
                            }
                        }
                        outstr += "</ul></td></tr>";
                    }

                    $(".tiZhi").append(outstr);

                }
               ai.autoHeight();
                $(".ContentBox").height(parseInt($(".CePing").height()) - 73);
            }
        });
    }
}
